Computers are used for tasks of ever increasing complexity. As computer systems and networks become more complicated, performing tasks such as assessing a software application for errors or assessing the security of the system also become more complicated. Often, in order to achieve a particular end, multiple software tools (which often utilize ‘command-line’ interfaces) are required.
Some users find command-line driven tools complicated to operate due to the fact that they usually require the user to know multiple command-line options/switches to perform a specific, relatively simple, task. Command-line driven tools and other graphical tools are often written to perform a specific task and it can take the combination of multiple tools before the user obtains all of the information he or she requires. Output from command-line tools can often be basic, hard to read and can contain more data than is required by the user. In addition, the output may not be in the format which is required or desired for further processing of the data. Automation of tools can often involve complex command-line statements which “pipe” information between applications. Potential for human error is increased with every command that is executed and with every option which is added to a tool.
An example of where multiple (and often complicated) command-line tools are required is in the software security field. There are many useful security tools which have been created as command-line tools which have multiple command-line options. An example is the software tool ‘Nmap’, a cross-platform network security scanner. Nmap's principle function is to evaluate the security of computers and to discover services or servers on a computer network.
It provides information about open ports on the network, the operating system, services running, etc. However, Nmap is quite complex to operate, having over 50 command-line options that can be used to identify potential security loopholes in systems and potentially producing tens or hundreds of lines of output even though only part of this information may be relevant to a user. For example, the user may only require the few lines of output that mention which ports are open, but will have to search the complete output to identify the information he or she requires.
If complex tasks are to be carried out by anyone other than a highly skilled operative, there is a need to simplify the operation of tasks. Therefore, there is a need to simplify the processes involved in running software tools (in particular command-lined based tools), in conjunction with one another to achieve a task, and in reporting the data returned by those tools.